summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SearchFragment.kt30
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt89
2 files changed, 62 insertions, 57 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SearchFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SearchFragment.kt
index f6aa370f0..eb4f513d1 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SearchFragment.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SearchFragment.kt
@@ -61,13 +61,6 @@ class SearchFragment : Fragment() {
binding.searchText.setText(savedInstanceState.getString(SEARCH_TEXT))
}
- gamesViewModel.searchFocused.observe(viewLifecycleOwner) { searchFocused ->
- if (searchFocused) {
- focusSearch()
- gamesViewModel.setSearchFocused(false)
- }
- }
-
binding.gridGamesSearch.apply {
layoutManager = AutofitGridLayoutManager(
requireContext(),
@@ -87,13 +80,22 @@ class SearchFragment : Fragment() {
filterAndSearch()
}
- gamesViewModel.games.observe(viewLifecycleOwner) { filterAndSearch() }
- gamesViewModel.searchedGames.observe(viewLifecycleOwner) {
- (binding.gridGamesSearch.adapter as GameAdapter).submitList(it)
- if (it.isEmpty()) {
- binding.noResultsView.visibility = View.VISIBLE
- } else {
- binding.noResultsView.visibility = View.GONE
+ gamesViewModel.apply {
+ searchFocused.observe(viewLifecycleOwner) { searchFocused ->
+ if (searchFocused) {
+ focusSearch()
+ gamesViewModel.setSearchFocused(false)
+ }
+ }
+
+ games.observe(viewLifecycleOwner) { filterAndSearch() }
+ searchedGames.observe(viewLifecycleOwner) {
+ (binding.gridGamesSearch.adapter as GameAdapter).submitList(it)
+ if (it.isEmpty()) {
+ binding.noResultsView.visibility = View.VISIBLE
+ } else {
+ binding.noResultsView.visibility = View.GONE
+ }
}
}
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt
index afabfb2b9..97eef40d2 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt
@@ -55,62 +55,65 @@ class GamesFragment : Fragment() {
adapter = GameAdapter(requireActivity() as AppCompatActivity)
}
- // Add swipe down to refresh gesture
- binding.swipeRefresh.setOnRefreshListener {
- gamesViewModel.reloadGames(false)
- }
+ binding.swipeRefresh.apply {
+ // Add swipe down to refresh gesture
+ setOnRefreshListener {
+ gamesViewModel.reloadGames(false)
+ }
- // Set theme color to the refresh animation's background
- binding.swipeRefresh.setProgressBackgroundColorSchemeColor(
- MaterialColors.getColor(
- binding.swipeRefresh,
- com.google.android.material.R.attr.colorPrimary
+ // Set theme color to the refresh animation's background
+ setProgressBackgroundColorSchemeColor(
+ MaterialColors.getColor(
+ binding.swipeRefresh,
+ com.google.android.material.R.attr.colorPrimary
+ )
)
- )
- binding.swipeRefresh.setColorSchemeColors(
- MaterialColors.getColor(
- binding.swipeRefresh,
- com.google.android.material.R.attr.colorOnPrimary
+ setColorSchemeColors(
+ MaterialColors.getColor(
+ binding.swipeRefresh,
+ com.google.android.material.R.attr.colorOnPrimary
+ )
)
- )
- // Watch for when we get updates to any of our games lists
- gamesViewModel.isReloading.observe(viewLifecycleOwner) { isReloading ->
- binding.swipeRefresh.isRefreshing = isReloading
- }
- gamesViewModel.games.observe(viewLifecycleOwner) {
- (binding.gridGames.adapter as GameAdapter).submitList(it)
- if (it.isEmpty()) {
- binding.noticeText.visibility = View.VISIBLE
- } else {
- binding.noticeText.visibility = View.GONE
+ // Make sure the loading indicator appears even if the layout is told to refresh before being fully drawn
+ post {
+ if (_binding == null) {
+ return@post
+ }
+ binding.swipeRefresh.isRefreshing = gamesViewModel.isReloading.value!!
}
}
- gamesViewModel.shouldSwapData.observe(viewLifecycleOwner) { shouldSwapData ->
- if (shouldSwapData) {
- (binding.gridGames.adapter as GameAdapter).submitList(gamesViewModel.games.value!!)
- gamesViewModel.setShouldSwapData(false)
+ gamesViewModel.apply {
+ // Watch for when we get updates to any of our games lists
+ isReloading.observe(viewLifecycleOwner) { isReloading ->
+ binding.swipeRefresh.isRefreshing = isReloading
+ }
+ games.observe(viewLifecycleOwner) {
+ (binding.gridGames.adapter as GameAdapter).submitList(it)
+ if (it.isEmpty()) {
+ binding.noticeText.visibility = View.VISIBLE
+ } else {
+ binding.noticeText.visibility = View.GONE
+ }
+ }
+ shouldSwapData.observe(viewLifecycleOwner) { shouldSwapData ->
+ if (shouldSwapData) {
+ (binding.gridGames.adapter as GameAdapter).submitList(gamesViewModel.games.value!!)
+ gamesViewModel.setShouldSwapData(false)
+ }
}
- }
- // Check if the user reselected the games menu item and then scroll to top of the list
- gamesViewModel.shouldScrollToTop.observe(viewLifecycleOwner) { shouldScroll ->
- if (shouldScroll) {
- scrollToTop()
- gamesViewModel.setShouldScrollToTop(false)
+ // Check if the user reselected the games menu item and then scroll to top of the list
+ shouldScrollToTop.observe(viewLifecycleOwner) { shouldScroll ->
+ if (shouldScroll) {
+ scrollToTop()
+ gamesViewModel.setShouldScrollToTop(false)
+ }
}
}
setInsets()
-
- // Make sure the loading indicator appears even if the layout is told to refresh before being fully drawn
- binding.swipeRefresh.post {
- if (_binding == null) {
- return@post
- }
- binding.swipeRefresh.isRefreshing = gamesViewModel.isReloading.value!!
- }
}
override fun onDestroyView() {